package br.com.remedioCerto.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.remedioCerto.model.Perfil;

public class PerfilDao extends BasicoDao<Perfil> {

	public static final String PERFIL_TB = "PERFIL";
	public static final String PERFIL_COLUNA_ID = "id";
	public static final String PERFIL_COLUNA_NOME = "NOME";
	public static final String PERFIL_COLUNA_FOTO = "FOTO";
	
	
	public static final String PERFIL_CREATE_TABLE = "CREATE TABLE "
						+ PERFIL_TB 			+ " (" + PERFIL_COLUNA_ID	+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
						+ PERFIL_COLUNA_FOTO 	+ " BLOB NOT NULL,"
						+ PERFIL_COLUNA_NOME 	+ " TEXT NOT NULL);";
	 	
	
	public PerfilDao(Context context) {
		super(context);
	}


	@Override
	protected ContentValues toContent(Perfil p) {
		ContentValues cv = new ContentValues();
		cv.put(PERFIL_COLUNA_NOME, p.getNome());
		cv.put(PERFIL_COLUNA_FOTO, p.getFoto());
		return cv;
	}


	@Override
	protected Perfil fromCursor(Cursor c) {
		if (c == null || c.getCount() < 1) {
			return null;
		}
		
		Perfil p = new Perfil();
		p.setId(c.getLong(c.getColumnIndex(PERFIL_COLUNA_ID)));
		p.setNome(c.getString(c.getColumnIndex(PERFIL_COLUNA_NOME)));
		p.setFoto(c.getBlob(c.getColumnIndex(PERFIL_COLUNA_FOTO)));
		return p;
	}



	public void adiciona(Perfil perfil){
		
		Long id = inserir(PERFIL_TB, toContent(perfil));
		
		if(id!= null && id > 0)perfil.setId(id);
		
	}
	
	public void atualiza(Perfil perfil){
		
		atualizar(PERFIL_TB, toContent(perfil), PERFIL_COLUNA_ID,perfil.getId());
		
	}

	public void remove(Long  id){
		remover(PERFIL_TB, PERFIL_COLUNA_ID,id);
	}


	public Cursor lista(){
		return consultarTodos(PERFIL_TB);
	}
	
	public List<Perfil> listaList() {
		List<Perfil> listaPerfil = new ArrayList<Perfil>();

		Cursor c = lista();
	
		while (!c.isAfterLast()) {
			Perfil p = fromCursor(c);
			listaPerfil.add(p);
			c.moveToNext();
		}
		c.close();

		return listaPerfil;

	}

	
	public List<String> listaSpinner() {
		List<String> listaSpinner = new ArrayList<String>();

		Cursor c = lista();
	
		while (!c.isAfterLast()) {
			listaSpinner.add(c.getString(c.getColumnIndex(PERFIL_COLUNA_NOME)));
			c.moveToNext();
		}
		c.close();

		return listaSpinner;

	}
	
	public Perfil findById(Long perfilId){
		Cursor c = consultaBasica(PERFIL_TB ,null, PERFIL_COLUNA_ID +" = "+perfilId , null);
		return fromCursor(c);
	}
	
	
}
